import Vue from 'vue'

import 'normalize.css/normalize.css' // A modern alternative to CSS resets

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
// import locale from 'element-ui/lib/locale/lang/en' // lang i18n

import '@/styles/index.scss' // global css

import App from './App'
import store from './store'
import router from './router'

import * as directives from '@/directives'// 引入自定义指令
import components from '@/components'
import * as filters from '@/filters'
import '@/icons' // icon
import '@/permission' // permission control
import CheckPermisson from '@/mixin/checkPermission'
import i18n from '@/lang'// 引入多语言

// 引入quill-editor编辑器
import VueQuillEditor from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
Vue.use(VueQuillEditor)

// 引入region的模块，省市县街道选择

// set ElementUI lang to ENnpm install v-region --save
// Vue.use(ElementUI, { locale })
// 如果想要中文版 element-ui，按如下方式声明
Vue.use(ElementUI, {
  i18n: (key, value) => i18n.t(key, value)
})

// 注册全局组件
Vue.use(components)
// 注册自定义指令
Object.keys(directives).forEach(key => {
  Vue.directive(key, directives[key])
})

// 全局混入检查对象
Vue.mixin(CheckPermisson)
// 全局过滤器
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})
Vue.config.productionTip = false

Vue.filter("dateFormat", function (originVal) {
  // 确保传入的时间戳是有效的数字，并且是毫秒级时间戳
  const timestamp = Number(originVal);
  if (isNaN(timestamp)) {
    return ""; // 或者返回一个默认值，比如 "Invalid date"
  }

  const dt = new Date(timestamp * 1000); // 如果传入的是秒级时间戳，乘以 1000 转换为毫秒
  const y = dt.getFullYear();
  const m = (dt.getMonth() + 1 + "").padStart(2, "0");
  const d = (dt.getDate() + "").padStart(2, "0");
  const hh = (dt.getHours() + "").padStart(2, "0");
  const mm = (dt.getMinutes() + "").padStart(2, "0");
  const ss = (dt.getSeconds() + "").padStart(2, "0");

  // 返回格式化后的日期时间字符串
  return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
});

// 日期格式化过滤器 - 年月格式
Vue.filter("dateFormats", function (value) {
  if (!value) return "";

  // 打印原始值，用于调试
  console.log("Original date value:", value);

  let date;

  // 处理不同的时间格式
  if (typeof value === "number") {
    // 如果是 10 位时间戳，需要转换为 13 位
    if (value.toString().length === 10) {
      date = new Date(value * 1000);
    } else {
      // 13 位时间戳直接使用
      date = new Date(value);
    }
  } else if (typeof value === "string") {
    // 处理字符串日期
    if (value.includes("T")) {
      // ISO 格式日期
      date = new Date(value);
    } else if (value.includes("-")) {
      // YYYY-MM-DD 格式
      date = new Date(value.replace(/-/g, "/"));
    } else {
      // 其他格式直接尝试解析
      date = new Date(value);
    }
  }

  // 检查是否为有效日期
  if (!date || isNaN(date.getTime())) {
    console.error("Invalid date:", value);
    return "";
  }

  // 获取年月
  const year = date.getFullYear();
  const month = date.getMonth() + 1;

  // 返回格式化后的字符串
  return `${year}.${month.toString().padStart(2, "0")}`;
});


// Vue.filter("dateFormats", function (originVal) {
//   const timestamp = Number(originVal);
//   if (isNaN(timestamp)) {
//     return ""; // 或者返回一个默认值，比如 "Invalid date"
//   }

//   const dt = new Date(timestamp);
//   const y = dt.getFullYear();
//   const m = (dt.getMonth() + 1).toString().padStart(2, "0");
//   const d = dt.getDate().toString().padStart(2, "0");

//   // 返回格式化后的日期字符串，只包含月和日
//   return `${m}-${d}`;
// });

Vue.filter("formatDate", (timestamp) => {
  if (!timestamp) return "";
  const date = new Date(timestamp * 1000);
  return `${(date.getMonth() + 1).toString().padStart(2, "0")}-${date
    .getDate()
    .toString()
    .padStart(2, "0")}`;

  // 如果想要中文格式：
  // return `${date.getMonth() + 1}月${date.getDate()}日`;
});

new Vue({
  el: '#app',
  router,
  store,
  i18n,
  render: h => h(App)
})
